Source:NetHack 3.2.0/hack.h
Below is the full text to hack.h from the source code of NetHack 3.2.0. To link to a particular line, write [[NetHack 3.2.0/hack.h#line123]], for example. Warning! This is the source code from an old release. For the latest release, see Source code 1. /* SCCS Id: @(#)hack.h 3.2 95/07/04 */ 2. /* Copyright © Stichting Mathematisch Centrum, Amsterdam, 1985. */ 3. /* NetHack may be freely redistributed. See license for details. */ 4. 5. #ifndef HACK_H 6. #define HACK_H 7. 8. #ifndef CONFIG_H 9. #include "config.h" 10. #endif 11. 12. /* For debugging beta code. */ 13. #ifdef BETA 14. #define Dpline pline 15. #endif 16. 17. #define TELL 1 18. #define NOTELL 0 19. #define ON 1 20. #define OFF 0 21. #define BOLT_LIM 8 /* from this distance ranged attacks will be made */ 22. #define MAX_CARR_CAP 1000 /* so that boulders can be heavier */ 23. #define DUMMY { 0 } 24. 25. /* symbolic names for capacity levels */ 26. #define UNENCUMBERED 0 27. #define SLT_ENCUMBER 1 28. #define MOD_ENCUMBER 2 29. #define HVY_ENCUMBER 3 30. #define EXT_ENCUMBER 4 31. #define OVERLOADED 5 32. 33. /* 34. * This is the way the game ends. If these are rearranged, the arrays 35. * in end.c and topten.c will need to be changed. 36. */ 37. #define DIED 0 38. #define CHOKING 1 39. #define POISONING 2 40. #define STARVING 3 41. #define DROWNING 4 42. #define BURNING 5 43. #define DISSOLVED 6 44. #define CRUSHING 7 45. #define STONING 8 46. #define GENOCIDED 9 47. #define PANICKED 10 48. #define TRICKED 11 49. #define QUIT 12 50. #define ESCAPED 13 51. #define ASCENDED 14 52. 53. #ifndef DUNGEON_H /* includes align.h */ 54. #include "dungeon.h" 55. #endif 56. 57. #ifndef MONSYM_H 58. #include "monsym.h" 59. #endif 60. #ifndef MKROOM_H 61. #include "mkroom.h" 62. #endif 63. #ifndef OBJCLASS_H 64. #include "objclass.h" 65. #endif 66. #ifndef WINTYPE_H 67. #include "wintype.h" 68. #endif 69. #ifndef DECL_H 70. #include "decl.h" 71. #endif 72. #ifndef TIMEOUT_H 73. #include "timeout.h" 74. #endif 75. 76. NEARDATA extern coord bhitpos; /* place where thrown weapon falls to the ground */ 77. 78. /* types of calls to bhit() */ 79. #define ZAPPED_WAND 0 80. #define THROWN_WEAPON 1 81. #define KICKED_WEAPON 2 82. #define FLASHED_LIGHT 3 83. #define INVIS_BEAM 4 84. 85. #ifndef TRAP_H 86. #include "trap.h" 87. #endif 88. #ifndef FLAG_H 89. #include "flag.h" 90. #endif 91. 92. #ifndef RM_H 93. #include "rm.h" 94. #endif 95. 96. #ifndef VISION_H 97. #include "vision.h" 98. #endif 99. 100. #ifndef DISPLAY_H 101. #include "display.h" 102. #endif 103. 104. #ifndef ENGRAVE_H 105. #include "engrave.h" 106. #endif 107. 108. #ifndef RECT_H 109. #include "rect.h" 110. #endif 111. 112. #ifdef USE_TRAMPOLI /* This doesn't belong here, but we have little choice */ 113. #undef NDECL 114. #define NDECL(f) f() 115. #endif 116. 117. #ifndef EXTERN_H 118. #include "extern.h" 119. #endif 120. 121. #ifndef WINPROCS_H 122. #include "winprocs.h" 123. #endif 124. 125. #ifdef USE_TRAMPOLI 126. #include "wintty.h" 127. #undef WINTTY_H 128. 129. #ifndef TRAMPOLI_H 130. #include "trampoli.h" 131. #endif 132. 133. #undef EXTERN_H 134. #include "extern.h" 135. #endif /* USE_TRAMPOLI */ 136. 137. #define NO_SPELL 0 138. 139. /* flags to control query_objlist() */ 140. #define BY_NEXTHERE 0x1 /* follow objlist by nexthere field */ 141. #define AUTOSELECT_SINGLE 0x2 /* if only 1 object, don't ask */ 142. #define USE_INVLET 0x4 /* use object's invlet */ 143. #define INVORDER_SORT 0x8 /* sort objects by packorder */ 144. #define SIGNAL_NOMENU 0x10 /* return -1 rather than 0 if none allowed */ 145. 146. /* Flags to control query_category() */ 147. /* BY_NEXTHERE used by query_category() too, so skip 0x01 */ 148. #define UNPAID_TYPES 0x02 149. #define GOLD_TYPES 0x04 150. #define WORN_TYPES 0x08 151. #define ALL_TYPES 0x10 152. #define BILLED_TYPES 0x20 153. #define CHOOSE_ALL 0x40 154. #define ALL_TYPES_SELECTED -2 155. 156. /*** some utility macros ***/ 157. #define yn(query) yn_function(query,ynchars, 'n') 158. #define ynq(query) yn_function(query,ynqchars, 'q') 159. #define ynaq(query) yn_function(query,ynaqchars, 'y') 160. #define nyaq(query) yn_function(query,ynaqchars, 'n') 161. #define nyNaq(query) yn_function(query,ynNaqchars, 'n') 162. #define ynNaq(query) yn_function(query,ynNaqchars, 'y') 163. 164. /* Macros for scatter */ 165. #define VIS_EFFECTS 0x1 /* Display visual effects */ 166. #define MAY_HITMON 0x2 /* Objects may hit monsters */ 167. #define MAY_HITYOU 0x4 /* Objects may hit you */ 168. #define MAY_HIT 0x6 /* Objects may hit you and monsters */ 169. #define MAY_DESTROY 0x8 /* Objects may be destroyed at random */ 170. #define MAY_FRACTURE 0x10 /* Boulders & statues may fracture */ 171. 172. /* Macros for launching objects */ 173. #define ROLL 1 174. #define FLING 2 175. 176. /* Flags to control menus */ 177. #define MENUTYPELEN sizeof("traditional ") 178. #define MENU_TRADITIONAL 0 179. #define MENU_COMBINATION 1 180. #define MENU_PARTIAL 2 181. #define MENU_FULL 3 182. 183. #define MENU_SELECTED TRUE 184. #define MENU_UNSELECTED FALSE 185. 186. #ifndef max 187. #define max(a,b) ((a) > (b) ? (a) : (b)) 188. #endif 189. #ifndef min 190. #define min(x,y) ((x) < (y) ? (x) : (y)) 191. #endif 192. #define plur(x) (((x) 1) ? "" : "s") 193. 194. #define ARM_BONUS(obj) (objects(obj)->otyp.a_ac + (obj)->spe \ 195. - min((int)(obj)->oeroded,objects(obj)->otyp.a_ac)) 196. 197. #define makeknown(x) discover_object((x),TRUE) 198. #define distu(xx,yy) dist2((int)(xx),(int)(yy),(int)u.ux,(int)u.uy) 199. #define onlineu(xx,yy) online2((int)(xx),(int)(yy),(int)u.ux,(int)u.uy) 200. 201. #define rn1(x,y) (rn2(x)+(y)) 202. 203. /* negative armor class is randomly weakened to prevent invulnerability */ 204. #define AC_VALUE(AC) ((AC) >= 0 ? (AC) : -rnd(-(AC))) 205. 206. #if defined(MICRO) && !defined(__DJGPP__) 207. #define getuid() 1 208. #define getlogin() ((char *)0) 209. #endif /* MICRO */ 210. 211. #if defined(OVERLAY)&&(defined(OVL0)||defined(OVL1)||defined(OVL2)||defined(OVL3)||defined(OVLB)) 212. # define USE_OVLx 213. # define STATIC_DCL extern 214. # define STATIC_OVL 215. # ifdef OVLB 216. # define STATIC_VAR 217. # else 218. # define STATIC_VAR extern 219. # endif 220. 221. #else /* !OVERLAY || (!OVL0 && !OVL1 && !OVL2 && !OVL3 && !OVLB) */ 222. # define STATIC_DCL static 223. # define STATIC_OVL static 224. # define STATIC_VAR static 225. 226. /* If not compiling an overlay, compile everything. */ 227. # define OVL0 /* Highest priority */ 228. # define OVL1 229. # define OVL2 230. # define OVL3 /* Lowest specified priority */ 231. # define OVLB /* The base overlay segment */ 232. #endif /* OVERLAY && (OVL0 || OVL1 || OVL2 || OVL3 || OVLB) */ 233. 234. /* Macro for a few items that are only static if we're not overlaid.... */ 235. #if defined(USE_TRAMPOLI) || defined(USE_OVLx) 236. # define STATIC_PTR 237. #else 238. # define STATIC_PTR static 239. #endif 240. 241. #endif /* HACK_H */ hack.h